<?php

// 括号匹配leetcode 20题
// string s = "(()){})"
// 是正确的括号返回true
class ValidBracket
{
    function isValid($s) {
        if (empty($s)) return false;
        if (strlen($s) % 2 != 0) {
            return false;
        }
        // 利用数组栈存储左边的括号
        $stack = [];
        for ($i = 0; $i < strlen($s); $i++) {
            $c = $s[$i];
            // echo $c;
            if ($c == '(' || $c == '[' || $c == '{') {
                array_push($stack, $c);
            } else {
                if (count($stack) == 0) {
                    return false;
                } else {
                    $temp = array_pop($stack);
                    if ($c == ')') {
                        if ($temp != '(') {
                            return false;
                        }
                    } elseif($c == ']') {
                        if ($temp != '[') {
                            return false;
                        }
                    } else if ($c == '}') {
                        if ($temp != '{') {
                            return false;
                        }
                    }
                }
            }
        }
        return count($stack) == 0;
    }
}

$s = "(()){})";
// echo strlen($s);
// echo $s[0];
$validBracket = new ValidBracket();
var_dump($validBracket->isValid($s));

